A “device” as used herein refers generally to a peripheral adhering to any known standard adopted by the industry. The term“target”, as used herein refers generally to a peripheral device, such as a hard drive, tape or any other such known devices. The term “target bridge”, as used herein is a network device coupled to a target via a target interface such as SATA or SAS and one or more hosts through a serial interface capable of performing protocol conversion, converting serial interface to SATA protocol for communication with the target SATA is a high-speed serial link replacement for the parallel Advanced Technology Attachment (ATA) attachment of mass storage devices. The serial link employed is a point-to-point high-speed differential link that utilizes multi-gigabit technology and 8b/10b encoding known to those of ordinary skill in the art. The SATA protocol is based on a layered communication model similar to Open Systems Interconnection (OSI) Reference Model. An overview is presented below. For more detail, the reader is referred to the SATA standard incorporated herein by reference. The SATA specification is provided in the publication entitled “Serial ATA: High Speed Serialized ATA Attachment” Revisions 1.0, dated Aug. 29, 2001, and the publication entitled “Serial ATA II: Extensions to Serial ATA 1.0”, Revision 1.0, dated Oct. 16, 2002, both of which are currently available at Serial ATA work group web site www.serialata.com.
The serial ATA link is defined by a protocol pursuant to a known standard, having four layers of communications, the physical layer for performing communication at a physical level, a link layer, a transport layer and an application layer or sometimes referred thereto as a command layer. A transmitter and a receiver, cannot directly communicate the latter with each other, rather, they must go through the other layers of their system prior to reaching a corresponding layer of the other. For example, for the physical layer of a transmitter to communicate with the transport layer of the receiver, it must first go through the link, transport and application layers of the transmitter and then through the serial ATA link to the application layer of the receiver and finally to the transport layer of the receiver. The basic unit of communication or exchange is a frame. A frame comprises of a start of frame (SOF) primitive, a frame information structure (FIS), a Cyclic Redundancy Checksum (CRC) calculated over the contents of the FIS and an end of frame (EOF) primitive. The serial ATA organization has defined a specification in which the definition of a frame is provided and which is intended to be used throughout this document. Primitives are double word (Dword) entities that are used to control and provide status of the serial line. The serial ATA organization has defined a specification in which the definition of allowed Primitives is provided and which is intended to be used throughout this document.
Fibre Channel (FC) is a standards-based networking architecture. The ANSI (American National Standards Institute) T11X3 committee is the governing body for FC standards. FC standards define a multilayered architecture for moving data across the network. The lower two layers, FC-1 and FC-0 also referred to as FC-Physical layer (FC-Phy) define media types, signaling, allowable lengths and media access. The FC-2 layer also referred to as link layer (FC-LL) defines how blocks of data will be segmented into sequence of frames, framing protocol, classes of service and flow control. The top layer FC-4 establishes interface between FC and the upper-level application
The topologies supported by fiber channel protocol include point-to-point, arbitrated look and switched fabric topologies. The Fiber Channel Arbitrated Loop (FC-AL) provides a middle ground between the point-to-point and fabric allowing connecting up to 126 ports on a single loop. In FC-AL, the transmit output of one port is connected to the receive input of the next. The process of connecting transmit output to receive output continues until a closed loop is formed. Problems inherent in any ring topology such as troubleshooting faulty lines or transceivers along the loop, connecting disconnecting devices to/from the loop promoted the development of centralized Arbitrated Loop (AL) hubs. AL hubs provide a physical star topology for a loop configuration, bringing each port's transmit and receive to a common location. The internal circuitry of a AL hub completes the required connections. One of the most useful features of a hub is bypass circuitry at each port, which allows the loop to circumvent a disabled or disconnected node while maintaining operation.
To prevent the potential for frame loss due to lack of available receive buffers at a port, fiber channel causes different levels of flow control to pace the rate at which the sender or transmitter is allowed to transmit frames. The first is a link level protocol called buffer-to-buffer (and a variation of buffer-to-buffer flow control used on virtual circuits called virtual circuit flow control) and an end-to-end flow control. All flow control protocols use a concept referred to as credit. Credit, as used herein, is defined as permission granted by a receiving port to a sending port to send a specified number of frames.
The number of frames that may be sent is referred to as available credit. As long as a port has a nonzero available credit, it has permission to send a number of frames equal to that of available credit. When a frame is sent, the available credit is decremented. When a response is received, the available credit is replenished. If the available credit reaches zero, frame transmission is suspended until the available credit is replenished to a nonzero value. Credit may be obtained in several ways depending upon class of service and topology. Transmission credit is initially established when two communicating nodes log in and exchange communication parameters. End-to-end flow control (EE_Credit) is used by Class 1 and Class 2 service between two end nodes and is monitored by the nodes themselves. An intervening switch does not participate in EE_Credit. Once an initial credit level is granted, the replenishment of credits is accomplished by acknowledgements (ACKs) issued by the receiver to the sender. The sender decrements the EE_Credit by 1 for each frame issued and increments only when an ACK is received. Buffer-to-buffer credit (BB_Credit) is issued by Class 2 and Class 3 services and relies on the receiver-ready (R_RDY) ordered set to replenish credits. BB_Credit has no end-to-end components. A sender decrements the BB_Credit by 1 for each frame sent and increments BB_Credit by 1 for each R_RDY received. The initial value of BB_Credit must be nonzero. In Arbitrated Loop, a different BB_Credit scheme is used. The BB_Credit assumes that the BB_Credit of a device is zero. The target node does not establish a positive BB_Credit until it is opened for a transaction by an initiator. The target then issues a number of R_RDYs equivalent to the receive buffer it has available. The differentiating feature of this BB_Credit is that an initiator does not have to maintain a table of BB_Credite values for potentially a large number of targets on the loop.
Fiber Channel Protocol (FCP) defines the mapping of popular SCSI command protocol to use fibre channel interface. This is the most widely used protocol mapping due to the popularity of the SCSI protocol combined with capabilities of fibre channel. The FCP mapping of SCSI to fibre channel defines information sets that are transferred between initiator and target. The information sets include: FCP_CMND, FCP_XFER_RDY FCP_DATA and FCP_RSP.
The FCP_CMND information set defines the data structure containing the SCSI command Descriptor Block and other command related information.
The FCP_XFER_RDY information set specifies the relative offset and length of the following data sequence.
The FCP_DATA information set is used to transfer data between an initiator and a target. The data may be sent as a single FCP_DATA information set, or broken up into multiple information sets.
The FCP_RSP information set defines the data structure containing the status response and signals the completion of command.
FIG. 1a shows a system 100 using a target bridge device 105. The system 100 is shown to include a host 101 coupled to a fibre channel (FC) Host Bus Adaptor (FC HBA) 103, the FC HBA 103 is shown to be coupled to a host port 111 of the target bridge device 105 via a FC link 107 and a host 102, which is shown coupled to a FC HBA 104, which is shown coupled to a host port 131 of the target bridge device 105 via a FC link 108. The device port 151 of the target bridge device 105 is shown coupled to a storage unit 106, such as a hard disk drive (HDD) or a tape drive or optical drive via a SATA link 109. The storage unit 106 is an example of a device.
FIG. 1b shows a system 110 using dual FC_AL loops to network plurality of SATA HDDs via target bridge devices. The system 110 is shown to include a host 101 coupled to a fibre channel (FC) Host Bus Adaptor (FC HBA) 103, the FC HBA 103 is shown to be coupled to a AL Hub 117 via a FC link 107 and a host 102, which is shown coupled to a FC HBA 104, which is shown coupled to a AL Hub 118 via a FC link 108. The AL Hub 117 is shown coupled to FC ports of target device bridges 115a thru 115h. The AL Hub 118 is shown coupled to FC ports of target device bridges 115a thru 115h. The target bridge devices 115a thru 115h are shown coupled to storage units 116a thru 116h respectively via SATA links.
A target bridge 205 of prior art described in U.S. patent application Ser. No. 10/986,732, filed on Nov. 12, 2004 and entitled “Dual Port Serial Advanced Technology Attachment (SATA) Disk Drive”, is shown in FIG. 2. The target bridge 205 is shown coupled to a host 201 via a FC HABA 203 and FC link 207, host 202 via a FC HABA 204 and FC link 208, and a HDD 206 via a SATA link 209. The target bridge 205 is shown to include a FC port 211 coupled to a FC link 207, a FC port 231 coupled to a FC link 208, a device port 251 coupled to a SATA link 209, a device port controller 261, and a controller 270. The FC port 211 and 231 are shown to include a command (CMD) queue 226 and 246 for queuing FCP commands. The device port 251 is shown to include a SATA Phy layer 252, a SATA link layer 254, a SATA transport layer 256, a SATA command layer 258 for managing the SATA link 209. The device port controller is shown to include a task file 262 and a mapping circuit 264 for mapping host tags to SATA device tags and visa versa. The controller 270 is coupled to device port controller 261, FC port 211 and FC port 231 via interfaces 269, 279 and 289 respectively. The controller 270 managing FC port 211, FC port 231 and protocol conversion between FCP and SATA, and other functions typically performed by such a controller.
While the early generation of FC supported data rates of 100 Mega Bytes per Second (MBs) the current generation must support data rates of 100, 200 and 400 MBs and future generations are adapted to support 100, 200, 400 and 800 MBs and higher data rates. As data rates increase, the time to process frames is reduced. For example, at data rate of 100 MBs and a frame with a pay load of 2048 bytes, the frame transmission/reception will take about 21 usec and at data rate of 400 MBs, it will be reduced to about 5 usec. The target bridge needs to be able to manage frames without affecting performance. It is desirable that target bridge provide scalability from 100 MBs to 800 MBs without substantially affecting performance as measured by the number of Input/Output Operations Per Second (IOOPS). It is further desirable that such scalability is achieved with cost effective architecture.
Thus, there is a need for architecture and a method for use in dual port fiber channel target devices thereby enhancing scalability and performance. “Performance”, as used herein, refers to the number of input/output operations per second.
There is a further need to provide a method and architecture for substantially reducing the manufacturing costs and maintaining scalability and performance.